home *** CD-ROM | disk | FTP | other *** search
- REM Paint Scroll Demo
- REM ©Mactutor 1987
- REM By Dave Kelly and Lee Bass
- REM Thanks Lee!!
- REM Adapted from E-126 of ZBasic manual
-
- WINDOW OFF
- COORDINATE WINDOW
- DEF MOUSE=1
- X&=MEM(-1)
- DIM X%(1),71 X$(719):X%(0)=576:X%(1)=720
- ScrollInc=20:'Increment for moving picture
- WINDOW #1,"",(50,80)-(430,310),3
- Wptr&=WINDOW(14)
- GOSUB "OpenFile"
-
- MENU 1,0,1,"File"
- MENU 1,1,1,"Open…/O"
- MENU 1,2,1,"Quit/Q"
- ON MENU GOSUB "MenuEvent":MENU ON:MOUSE ON
- "Main Program Loop"
- DO
- IF New=1 THEN PUT (-XChange,-YChange),X%(0),PSET:New=0
- MouseEvent=MOUSE(0):Horizpos=MOUSE(1):Vertpos=MOUSE(2)
- LONG IF Horizpos>0 AND Horizpos<380 AND Vertpos>0 AND Vertpos<230' in our window
- LONG IF Vertpos>153:REM bottom section
- IF Horizpos<127 THEN CursorNumber=264
- IF Horizpos>=127 AND Horizpos<=253 THEN CursorNumber=258
- IF Horizpos>253 THEN CursorNumber=263
- END IF
- LONG IF Vertpos>=77 AND Vertpos<=153:REM middle section
- IF Horizpos<127 THEN CursorNumber=259
- IF Horizpos>=127 AND Horizpos<=253 THEN CursorNumber=265
- IF Horizpos>253 THEN CursorNumber=260
- END IF
- LONG IF Vertpos<77:REM top section
- IF Horizpos<127 THEN CursorNumber=261
- IF Horizpos>=127 AND Horizpos<=253 THEN CursorNumber=257
- IF Horizpos>253 THEN CursorNumber=262
- END IF
- LONG IF MouseEvent<0:' cursor down change xx,yy to move picture
- IF CursorNumber=259 THEN XChange=XChange-ScrollInc
- IF CursorNumber=260 THEN XChange=XChange+ScrollInc
- IF CursorNumber=257 THEN YChange=YChange-ScrollInc
- IF CursorNumber=258 THEN YChange=YChange+ScrollInc
- IF CursorNumber=261 THEN XChange=XChange-ScrollInc:YChange=YChange-ScrollInc
- IF CursorNumber=262 THEN XChange=XChange+ScrollInc:YChange=YChange-ScrollInc
- IF CursorNumber=263 THEN XChange=XChange+ScrollInc:YChange=YChange+ScrollInc
- IF CursorNumber=264 THEN XChange=XChange-ScrollInc:YChange=YChange+ScrollInc
- IF YChange<0 THEN YChange=0
- IF XChange<0 THEN XChange=0
- IF YChange>720-230 THEN YChange=720-230
- IF XChange>576-380 THEN XChange=576-380
- PUT (-XChange,-YChange),X%(0),PSET
- END IF
- MyCursor=CursorNumber:
- CURSOR MyCursor
- XELSE
- CURSOR 0:CursorNumber=0:REM Not in our window
- END IF
- UNTIL Finished=1
- MENU OFF:MOUSE OFF
- END
-
- "MenuEvent"
- Menunumber=MENU(0)
- Menuitem=MENU(1)
- IF Menuitem=1 THEN GOSUB "OpenFile"
- IF Menuitem=2 THEN END
- MENU
- RETURN
-
- "OpenFile"
- CALL HIDEWINDOW(Wptr&)
- WINDOW#2,"",(100,30)-(400,55),2
- TEXT 2,12,1
- LOCATE 0,0
- CLS LINE
- PRINT SPC(5);"Please Select a Paint File to View";
- "Load PaintPic"
- F$=FILES$(1,"PNTG","PNTG",V%)
- IF F$="" THEN CALL SHOWWINDOW(Wptr&):RETURN
- LOCATE 0,0
- CLS LINE
- PRINT "Now Loading ";F$;
- REM Read in the Paint File
- OPEN"I",1,F$,1,V% : S&=LOF(1):REM Set length of Paint File
- A&=VARPTR(A$):Y&=VARPTR(X$(0)):X&=A&:N=256
- FL&=S&-512:CURSOR 4:RECORD #1,512
- FOR I = 1 TO 720:REM Lines in the Paint Picture
- LONG IF N>180
- BLOCKMOVE X&,A&,256-N:X&=A&
- IF N>FL& THEN NX=FL& ELSE NX=N
- READ FILE #1,A&+256-N,NX:FL&=FL&-NX
- END IF
- CALL UNPACKBITS(X&,Y&,72):N=X&-A&
- NEXT
- CLOSE #1
- XChange=0:YChange=0:New=1
- WINDOW CLOSE 2
- CALL SHOWWINDOW(Wptr&)
- WINDOW 1
- RETURN